package edu.upc.cineplanet.web;

import java.util.List;



import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;



import edu.upc.cineplanet.Domain.Cine;
import edu.upc.cineplanet.Domain.Entrada;
import edu.upc.cineplanet.Domain.Funcion;
import edu.upc.cineplanet.Domain.Pelicula;
import edu.upc.cineplanet.Domain.Tipofuncion;
import edu.upc.cineplanet.Domain.UsuarioWeb;
import edu.upc.cineplanet.service.CineService;
import edu.upc.cineplanet.service.EntradaService;
import edu.upc.cineplanet.service.FuncionService;
import edu.upc.cineplanet.service.PeliculaService;
import edu.upc.cineplanet.service.TipofuncionService;
import edu.upc.cineplanet.service.UsuarioWebService;

@Controller
public class ReservaController {

	@Autowired
	UsuarioWebService  usuarioservice;
	
	@Autowired
	EntradaService  service;	

	@Autowired
	PeliculaService peliculaservice;

	@Autowired
	TipofuncionService tipofuncionservice;

	@Autowired
	FuncionService funcionservice;
	
	@Autowired
	CineService cineservice;
	
	@Autowired
	EntradaService entradaservice;
	
	@RequestMapping(value="reserva", method=RequestMethod.GET)
    public String setupForm1( Model model, @RequestParam("dni") String dni ){
		
			UsuarioWeb usua = usuarioservice.ObtenerUsuarioWeb(dni);
		   	List<Entrada> entradas = service.mostrarEntradas(usua.getCo_Usuario());
		   	List<Cine> cines = cineservice.obtenerCines();
		   	List<Pelicula> peliculas = peliculaservice.obtenerTodasPeliculas();
		   	List<Tipofuncion> tipofuncion = tipofuncionservice.listarTipofuncion();
			 
			
			model.addAttribute("entradas", entradas);		   	
    		
    		model.addAttribute("cines", cines);
    		model.addAttribute("data3", peliculas);
    		model.addAttribute("data4", tipofuncion);
    		model.addAttribute("usuario", usua);
        	return "ReservaEntrada";                	                
    }			
	
	@RequestMapping(value="reserva",method = RequestMethod.POST )	
	public String setupForm2(@RequestParam("textarea") String cine, @RequestParam("dni") String dni,  @RequestParam("funcion") String funcion  ,@RequestParam("cantidad") int cantidad  ,Model model ) {
		
		UsuarioWeb usu= usuarioservice.ObtenerUsuarioWeb(dni);		

		
		if ( funcion.length() > 0 ){
			
			Entrada entrada = new Entrada();
			
			entrada.setCodigoUsuario( usu.getCo_Usuario() );
			entrada.setCodigoFuncion( funcion );
			entrada.setCantidadEntrada(cantidad);
			
			entradaservice.comprarEntrada(entrada);
			funcionservice.actualizarCantidadFuncion(funcion, String.valueOf(cantidad));
			
			
			
		}
		List<Funcion> funciones = funcionservice.verFuncionesDisponibles("09/04/2011", cine) ;
		List<Cine> cines = cineservice.obtenerCines();
		List<Entrada> entradas = entradaservice.mostrarEntradas( usu.getCo_Usuario() );
		
		model.addAttribute("cines", cines);
		model.addAttribute("usuario", usu);
		model.addAttribute("funciones", funciones);					
		model.addAttribute("entradas", entradas);		
			
        return "ReservaEntrada";
    }						
	
	
	
	
	
}
